package com.baihan.angus.app.game.common.data_center.remote.api;

import java.util.List;
import java.util.Map;

import io.reactivex.Observable;
import okhttp3.ResponseBody;
import retrofit2.http.Body;
import retrofit2.http.Field;
import retrofit2.http.FieldMap;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.GET;
import retrofit2.http.POST;
import retrofit2.http.PUT;
import retrofit2.http.Path;
import retrofit2.http.Query;

public interface UserServer {

    /**
     * 获取短信验证码
     *
     * @return
     */
    @POST("api/sms/send")
    Observable<ResponseBody> getCode(@Body Map<String, Object> pMap);

    /**
     * 用户登录
     *
     * @return
     */
    @POST("api/user/mobilelogin")
    Observable<ResponseBody> codeLogin(@Body Map<String, Object> pMap);

    /**
     * 退出登录
     */
    @GET("api/user/logout")
    Observable<ResponseBody> logout();

    /**
     * 修改用户资料
     *
     * @return
     */
    @POST("api/user/profile")
    Observable<ResponseBody> modifyUserInfo(@Body Map<String, Object> pMap);

    /**
     * 意见反馈
     *
     * @return
     */
    @POST("api/feedback")
    Observable<ResponseBody> feedback(@Body Map<String, Object> pMap);

    /**
     * 用户升级
     *
     * @return
     */
    @POST("api/user/verify")
    Observable<ResponseBody> upgrade(@Body Map<String, Object> pMap);

    /**
     * 刷新用户数据
     */
    @GET("api/user/index")
    Observable<ResponseBody> getUserInfo();

    /**
     * 用户认证详情
     */
    @GET("api/user_verify/{id}")
    Observable<ResponseBody> getVerifyDetail(@Path("id") String id, @Query("user") String user);

    /**
     * 用户认证状态
     */
    @GET("api/user_verify/user/{id}")
    Observable<ResponseBody> getVerifyStatus(@Path("id") String id);

    /**
     * 用户升级更新(重新认证)
     */
    @PUT("api/user_verify/{id}")
    @FormUrlEncoded
    Observable<ResponseBody> updateUpgrade(@Path("id") String id, @FieldMap Map<String, Object> pMap);

    /**
     * 获取相册集
     */
    @GET("api/user/photo")
    Observable<ResponseBody> getPhotoList();

    /**
     * 创建相册集
     */
    @POST("api/photo")
    Observable<ResponseBody> createPhotoList(@Body Map<String, Object> pMap);

    /**
     * 更新相册集
     */
    @PUT("api/photo/{id}")
    @FormUrlEncoded
    Observable<ResponseBody> updatePhotoList(@Field("pics") List pics);
}
